﻿Public Class Form1
  Private Function altezzaSchermo() As Integer
    ' dimensione in altezza dello schermo
    Return _
        My.Computer.Screen.WorkingArea.Height
  End Function
  Private Function larghezzaSchermo() _
          As Integer
    ' dimensione in larghezza dello schermo
    Return _
        My.Computer.Screen.WorkingArea.Width
  End Function
  Public Sub ridimensionaForm()
    ' definizione delle variabili
    Dim x As Double
    Dim y As Double
    Dim larghezza As Double
    Dim altezza As Double
    ' creazione oggetto per estrazione
    ' di numeri casuali
    Dim rnd As New Random
    ' calcolo della larghezza del form
    larghezza = _
        rnd.NextDouble * larghezzaSchermo()
    If larghezza < 50 Then
      ' un form troppo stretto 
      ' non è ammesso
      larghezza = 50
    ElseIf larghezza > 200 Then
      ' form troppo grande
      larghezza = 200
    End If
    ' calcolo dell'altezza del form
    altezza = _
        rnd.NextDouble * altezzaSchermo()
    If altezza < 50 Then
      ' un form troppo basso non è ammesso
      altezza = 50
    ElseIf altezza > 200 Then
      ' form troppo grande
      altezza = 200
    End If
    ' calcola posizione dell'angolo in alto a
    ' sinistra in base alla definizione dello
    ' schermo e delle dimensioni del form per 
    ' non farlo uscire dallo schermo
    x = rnd.NextDouble _
        * (larghezzaSchermo() - larghezza)
    y = rnd.NextDouble _
        * (altezzaSchermo() - altezza)
    ' istruzione che realizza effettivamente
    ' l'animazione
    Dim tempRect As New Rectangle( _
        CType(x, Integer), _
        CType(y, Integer), _
        CType(larghezza, Integer), _
        CType(altezza, Integer))
    Me.DesktopBounds = tempRect
  End Sub
  Private Sub Form1_Load(ByVal sender _
          As Object, _
          ByVal e As System.EventArgs) _
          Handles Me.Load
    ' modifica dimensioni e posizione
    ' del form all'avvio
    ridimensionaForm()
  End Sub
  Private Sub Form1_MouseHover(ByVal sender _
          As Object, _
          ByVal e As System.EventArgs) _
          Handles Me.MouseHover
    ' modifica dimensioni e posizione 
    ' del form quando il cursore del mouse
    ' entra nell'area occupata dal form
    ridimensionaForm()
  End Sub
End Class
